14. 最长公共前缀

14. 最长公共前缀

14. 最长公共前缀 - 力扣(LeetCode)

第一版


import (
	"math"
)
func longestCommonPrefix(strs []string) string {
    ret := []byte{}

    minLen := math.MaxInt
    for _, s := range strs {
        minLen = min(minLen, len(s))
    }

    for i := 0; i < minLen; i++ {

        for j := range strs {
            if j == 0 {
                continue
            }

            if strs[j][i] != strs[0][i] {
                return string(ret)
            }
        }

        ret = append(ret, strs[0][i])
    }

    return string(ret)
}
  1. 可以将长度判断放到循环里面去做
  2. 直接遍历第一个元素就行了,如果遇到不相等的,直接返回prefix,遇到相等的就继续,最多也就是第一个元素这么长

第二版


func longestCommonPrefix(strs []string) string {
    for j, b := range []byte(strs[0]) {
        for _, s := range strs {
            if j == len(s) || s[j] != b {
                return strs[0][:j]
            }
        }
    }

    return strs[0]
}

参考了一下灵神的答案,优雅

贴个灵神答案的链接: 简单题,简单做(Python/Java/C++/C/Go/JS/Rust)

希望我以后做题也是这么举重若轻


本站总访问量次 本站访客数人次 本文总阅读量